home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Generate / g-chord < prev    next >
Lisp/Scheme  |  1998-10-24  |  3KB  |  89 lines

  1. g-chord seed chord-low chord-high transp-low transp-high pattern
  2.  
  3. The function g-chord enables the composer to generate chords from a symbol melody or row. The size of the chord generated will lie between <chord-low> and <chord-high> parameters. The optional transposition of symbol elements can also be set to lie between <transp-low> and <transp-high> parameters.
  4.  
  5. The function works with symbols and intervals.
  6.  
  7. INTERVAL:
  8.  
  9. (setq op.31-Var-für-Orch '(1 7 9 6 8 0 5 4 10 11 2 3))
  10. (setq interval-list (get-interval :all op.31-Var-für-Orch))
  11. => (6 2 -3 2 -8 5 -1 6 1 -9 1)
  12.  
  13. (g-chord .25 1 2 0 0 interval-list)
  14. => (6 2 (-3 2) -8 5 (-1 6) (1 -9) 1)
  15.  
  16. (i-process 1 -5 43 (g-chord .25 1 2 0 0 interval-list))
  17. => (b h j gi a f ek lc d)
  18.  
  19. (setq interval-lists (rotate-f interval-list))
  20. => ((6 2 -3 2 -8 5 -1 6 1 -9 1)
  21.     (2 -3 2 -8 5 -1 6 1 -9 1 6)
  22.     (-3 2 -8 5 -1 6 1 -9 1 6 2)
  23.     (2 -8 5 -1 6 1 -9 1 6 2 -3)
  24.     (-8 5 -1 6 1 -9 1 6 2 -3 2)
  25.     (5 -1 6 1 -9 1 6 2 -3 2 -8)
  26.     (-1 6 1 -9 1 6 2 -3 2 -8 5)
  27.     (6 1 -9 1 6 2 -3 2 -8 5 -1)
  28.     (1 -9 1 6 2 -3 2 -8 5 -1 6)
  29.     (-9 1 6 2 -3 2 -8 5 -1 6 1)
  30.     (1 6 2 -3 2 -8 5 -1 6 1 -9))
  31.  
  32. (i-process 1 -5 43 (g-chord .25 1 4 0 0 interval-lists))
  33. => ((b hjgi a fekl cd)
  34.     (fc e-e bagh -c-bf)
  35.     (ce -eb ag h-c-bf h)
  36.     (jb gf lm de kmj)
  37.     (b gf lm de km jl)
  38.     (qp v wn ou wt vn)
  39.     (mstk lrtq skp)
  40.     (vwno uwt vn sr)
  41.     (sjkq sp rj on t)
  42.     (kl r tq sk pou v)
  43.     (w]_ \\ ^v[ |Z`a| x))
  44.  
  45. SYMBOL:
  46.  
  47. (g-chord nil 2 5 0 2 '(a b c d e f g))
  48. => (cde fg gh)
  49. or ...
  50.  
  51. (g-chord .24 2 3 -5 11 '(a b c d e f g))
  52. => (de cde mn)
  53.  
  54. (g-chord .32 2 3 0 24 '(a b c d e f g))
  55. => (mn jk nop)
  56.  
  57. (g-chord .25 1 3 0 0 (g-cluster .34 's -6 6 7 9))
  58. => (ef g h i-d-c -ba)
  59.  
  60. (g-chord .56 3 4 2 3 (g-cluster .23 's 0 0 '(4 5 7 9) '(6 7 7 8)))
  61. => ((hijk kl) (ijkl mno) (jklm ode) (mnod def g))
  62.  
  63. (g-chord .23 3 4 -11 11
  64.            (g-cluster .23 's 0 0 '(4 5 7 9) '(6 7 7 8)))
  65.  
  66. => ((nop efg) (lmn bcde) (ijkl b-k-j) (stu -d-c-b kl))
  67.  
  68. In the following example notice how the function enables a sequence of identical outputs from the <gen-repeat> to be processed as unique sequences of chords. Normally, this sort of process would only be possible with the function <gen-collect>.
  69.  
  70. (g-chord .23 1 4 -5 45
  71.            (gen-repeat 12 (list '(a b c d e f g h i j k l))))
  72.  
  73. => ((z[\] fgh pq wxy) (rstu mnop klm o)
  74.     (vwx -c _`ab i ` ij) (-f-e-d-c nop vwxy q)
  75.     (s c -d-c i c fg pqrs) (efgh w g bc m g jk)
  76.     (efg vwxy i d no i) (ij wx k lm bcd lm)
  77.     ([\ wx [\ nopq tu) (-c-bab ijk z[\ lm)
  78.     (-d ef yz pqrs t \ ^) (d qrst defg nop))
  79.  
  80. (g-chord .23 3 5 -5 45
  81.            (gen-repeat 12 (list '(a b c d e f g h i j k l))))
  82.  
  83. => ((bcdef nopqr xy) (ijklm hijkl no)
  84.     (abcd [\] fghij) (jklmn tuvwx pq)
  85.     (efg abc fghi rs) (-f-e-d-c-b jkl fgh k)
  86.     (-f-e-d-c-b jklmn hi) (ghi jklm bcd lm)
  87.     (wxyz lmno rstu) (efghi xyz[ klm)
  88.     (klm nopq yz[\ ^) (pqr bcdef mnop))
  89.